package br.com.acs.CameraIP.controller;


import br.com.acs.CameraIP.dao.PerfilUsuarioDao;
import br.com.acs.CameraIP.dao.PerfilUsuarioDaoImp;
import br.com.acs.CameraIP.model.PerfilUsuario;
import br.com.acs.CameraIP.model.Usuario;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;


@ManagedBean
@SessionScoped
public class PerfilUsuarioController implements Serializable{
	private static final long serialVersionUID = 1L;
	private PerfilUsuario perfilUsuario = new PerfilUsuario();
    private DataModel<PerfilUsuario> listaPerfilUsuarios;

	public DataModel<PerfilUsuario> getListarPerfilUsuarios(Usuario usuario) {
        List<PerfilUsuario> lista = new PerfilUsuarioDaoImp().listPorUsuario(usuario);
        listaPerfilUsuarios = new ListDataModel<PerfilUsuario>(lista);
        return listaPerfilUsuarios;
    }
   
		public DataModel<PerfilUsuario> getListarPerfilUsuariosAtivos() {
        List<PerfilUsuario> lista = new PerfilUsuarioDaoImp().listAtivos();
        listaPerfilUsuarios = new ListDataModel<PerfilUsuario>(lista);
        return listaPerfilUsuarios;
    }
 
    public PerfilUsuario getPerfilUsuario() {
        return perfilUsuario;
    }

    public void setPerfilUsuario(PerfilUsuario perfilUsuario) {
        this.perfilUsuario = perfilUsuario;
    }

    public void prepararAdicionarPerfilUsuario(ActionEvent actionEvent){
    	perfilUsuario = new PerfilUsuario();
    }

    public void prepararAlterarPerfilUsuario(ActionEvent actionEvent){
    	perfilUsuario = (PerfilUsuario)(listaPerfilUsuarios.getRowData());
      }
    
    public String excluirPerfilUsuario(ActionEvent actionEvent){
    	PerfilUsuarioDao dao = new PerfilUsuarioDaoImp();
    	dao.remove(perfilUsuario);
        return "lstUsuario";
    }

	public void adicionarPerfilUsuario(ActionEvent actionEvent){
    	PerfilUsuarioDao dao = new PerfilUsuarioDaoImp();
        dao.save(perfilUsuario);
    }

    public void alterarPerfilUsuario(ActionEvent actionEvent){
    	PerfilUsuarioDao dao = new PerfilUsuarioDaoImp();
        dao.update(perfilUsuario);
   }

	public DataModel<PerfilUsuario> getListaPerfilUsuarios() {
		return listaPerfilUsuarios;
	}

	public void setListaPerfilUsuarios(DataModel<PerfilUsuario> listaPerfilUsuarios) {
		this.listaPerfilUsuarios = listaPerfilUsuarios;
	}

    public void selectPerfilUsuario(ActionEvent actionEvent){
    	Map<String, Object> contexto = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
    	perfilUsuario = (PerfilUsuario) contexto.get("perfilUsuario");// onde "perfilUsuario" é o var do DataTable utilizado
    }
    public String reinit() {  
        perfilUsuario = new PerfilUsuario();
        return null;  
    } 
}
